package yangsw87.basic;

import java.util.Iterator;
import java.util.Scanner;

public class J23_MemberMain {

	private static Scanner sc = new Scanner(System.in);
	// private static J23_MemberDAO srv = new J23_MemberDAO();
	private static J23_MemberService srv = new J23_MemberDAO();
	// MemberDAO는 MemberService를 구현한
	// 클래스이므로 객체생성시 객체유형을
	// 인터페이스로 정의할 수 있음(주-종관계)

	private static final String TITLE = " -=회원관리 프로그램=- ";
	private static final String MENU = " 1)추가 2)회원전체조회 3)회원상세조회 4)회원수정  5)회원탈퇴 0)종료 ";
	private static final String ADDMSG = " 아이디, 주민번호, 비밀번호, 우편번호, 주소, 전화번호, 휴대폰, 결제방법순으로 입력 ";
	private static final String ADDOK = " 성공적으로 회원가입이 완료되었어요! ";
	private static final String READMSG = " 상세조회 할 아이디를 입력하세요 ";
	private static final String UPDMSG1 = " 수정할 회원 아이디를 입력하세요 ";
	private static final String UPDMSG2 = " 비밀번호, 우편번호, 주소, 전화번호, 휴대폰, 결제방법순으로 입력 ";
	private static final String DELMSG = " 삭제할 회원 아이디를 입력하세요 ";
	private static final String UPDOK = " 성공적으로 회원정보가 수정되었어요! ";
	private static final String DELOK = " 성공적으로 회원정보가 삭제되었어요! ";
	private static final String EXITOK = " 프로그램을 종료합니다~ ";
	private static final String ERRMSG = " 잘못된 코드를 입력하였습니다! ";

	public static void main(String[] args) {
		// 회원관리 프로그램
		System.out.println(TITLE);

		while (true) {
			System.out.println(MENU);
			switch (sc.next()) {
			case "1": // 회원가입
				addMember();
				break;
			case "2": // 전체조회
				readMember();
				break;
			case "3": // 상세조회
				readOneMember();
				break;
			case "4": // 회원수정
				modifyMember();
				break;
			case "5": // 회원삭제
				deleteMember();
				break;
			case "0": // 종료
				exitMember();
				break;
			default:
				System.out.println(ERRMSG);
			} // switch

		} // while

	} // main

	private static void addMember() {
		System.out.println(ADDMSG);

		J23_MemberVO mvo = new J23_MemberVO(sc.next(), sc.next(), sc.next(),
				sc.next(), sc.next(), sc.next(), sc.next(), sc.next());
		if (srv.insertMember(mvo) > 0) {
			System.out.println(ADDOK);
		}
	}

	private static void readMember() {
		Iterator<J23_MemberVO> iter = srv.readMember().iterator();
		while (iter.hasNext()) {
			System.out.println(iter.next());
		}

	}

	private static void readOneMember() {
		readMember();
		System.out.println(READMSG);
		String userid = sc.next();

		if (srv.readOneMember(userid) != null)
			System.out.println(srv.readOneMember(userid));
		else
			System.out.println("아이디 잘못입력");

	}

	private static void modifyMember() {
		readMember(); // 수정 전 전체 데이터 출력
		System.out.println(UPDMSG1);
		String userid = sc.next();

		System.out.println(UPDMSG2);
		J23_MemberVO mvo = new J23_MemberVO(userid, null, sc.next(), sc.next(),
				sc.next(), sc.next(), sc.next(), sc.next());

		if (srv.updateMember(mvo) > 0) {
			System.out.println(UPDOK);
		}

	}

	private static void deleteMember() {
		readMember(); // 수정 전 전체 데이터 출력
		System.out.println(DELMSG);
		String userid = sc.next();

		if (srv.deleteMember(userid) > 0) {
			System.out.println(DELOK);
		}

	}

	private static void exitMember() {
		sc.close();
		System.out.println(EXITOK);
		System.exit(0);

	}

} // class
